# 指定编译目标架构，可以通过命令行传入参数，例如 make ARCH=x86
ARCH ?= x64

# 库文件名
TARGET = ../target/$(ARCH)/librtdeapi.a

# gcc类型
CC_x86 = gcc -m32
CC_x64 = gcc -m64
CC_armx64 = aarch64-linux-gnu-gcc

CC = $(CC_$(ARCH))

# 存放中间文件的路径
BUILD_DIR = build/$(ARCH)

# 存放.c 源文件的文件夹
SRC_DIR = \
	.	

# 存放头文件的文件夹
INC_DIR = \
	.	\
	../base

# 在头文件路径前面加入-I
INCLUDE = $(patsubst %, -I %, $(INC_DIR))

# 得到带路径的 .c 文件
CFILES := $(foreach dir, $(SRC_DIR), $(wildcard $(dir)/*.c))

# 得到不带路径的 .c 文件
CFILENDIR := $(notdir $(CFILES))

# 将工程中的.c 文件替换成 ./build 目录下对应的目标文件 .o
COBJS = $(patsubst %, ./$(BUILD_DIR)/%, $(patsubst %.c, %.o, $(CFILENDIR)))

# make 自动在源文件目录下搜索 .c 文件
VPATH = $(SRC_DIR)

# 创建静态库
$(TARGET): $(COBJS)
	@mkdir -p $(dir $(TARGET))
	ar rcs $@ $^

# 编译.c 文件为目标文件
$(COBJS): $(BUILD_DIR)/%.o: %.c
	@mkdir -p $(BUILD_DIR)
	$(CC) $(INCLUDE) -c -o $@ $<

# 清理规则
clean:
	rm -rf $(BUILD_DIR) $(TARGET)
